package com.parsechina.hpush.broker.spi;

import com.parsechina.hpush.broker.internal.ClientInfo;

import java.util.List;

/**
 * 存储注册的客户端.
 *
 * @author lc
 */
public interface IClientStore {

    /**
     * 存储注册的客户端
     *
     * @param clientInfo client
     */
    void sotreClient(ClientInfo clientInfo);

    /**
     * 设置客户端在线
     *
     * @param clientId id
     * @return ClientInfo
     */
    ClientInfo onlineState(String clientId);

    /**
     * 设置客户端离线
     *
     * @param clientId id
     * @return ClientInfo
     */
    ClientInfo offlineState(String clientId);

    ClientInfo getClient(String clientId);

    List<ClientInfo> getAllClients();

    void initStore();

}
